[Scia Reto](https://sciareto.org) mind map   
> __version__=`1.1`,generatorId=`com.igormaznitsa:idea-mindmap:intellij-2022.33.0-IntelliJ IDEA`
---

# 进制转换
> align=`left`


## 二进制
> align=`left`


### 说明：<br/>由0和1组成<br/>计算机的底层逻辑和数据使用二进制
> align=`left`


## 十进制
> align=`left`


### 人类日常使用的进制

## 二进制转十进制
> align=`left`


### 无符号的二进制
> align=`left`


#### 算法：从右往左依次使用二进制位上的位数n，计算1乘以2的n次幂的和（n从0开始）
> align=`left`


#### 举例：1010<br/>二进制位数：3 2 1 0<br/>二进制数字：1 0 1 0<br/>计算方式： \(1 \* 2^3\)\+\(0 \* 2^2\)\+\(1 \* 2^1\)\+\(0 \* 2^0\)<br/>           = 8 \+ 0 \+ 2 \+ 0<br/>           = 10
> align=`left`


### 带符号的二进制
> align=`left`


#### 算法：除去最高位的符号位，其他算法与无符号二进制相同
> align=`left`


#### 举例：1110<br/>二进制位数：\- 2 1 0<br/>二进制数字：1 1 1 0<br/>计算方式： \-1 \* \(\(0 \* 2^2\)\+\(1 \* 2^1\)\+\(0 \* 2^0\)\)<br/>           = \-1 \* \(4 \+ 2 \+ 0\)<br/>           = \-6
> align=`left`


### 浮点二进制
> align=`left`


#### 算法：从小数点往右依次使用二进制位上的位数x，乘以2的\-x次幂的和（x从1开始），加上小数点前的整数部分

#### 举例：1001\.0101<br/>二进制位数：3 2 1 0 \. \-1 \-2 \-3 \-4<br/>二进制数字：1 0 0 1\.  0  1  0  1<br/>计算方式： <br/>整数部分：\(1 \* 2^3\)\+\(0 \* 2^2\)\+\(0 \* 2^1\)\+\(1 \* 2^0\)<br/>           = 8\+0\+0\+1<br/>           = 9<br/>小数部分：\(0 \* 2^\-1\)\+\(1 \* 2^\-2\)\+\(0 \* 2^\-3\)\+\(1 \* 2^\-4\)<br/>           = 0 \+ 0\.25 \+ 0 \+ 0\.0625<br/>           = 0\.3125<br/>最终结果：9 \+ 0\.3125 = 9\.3125
> align=`left`


## 十进制转二进制
> align=`left`


### 整数部分转化

#### 算法：<br/>1\. 将整数部分除2取余<br/>2\. 当商不为0时，将商作为被除数继续除2直至商为0<br/>3\. 将余数从下到上的顺序记录
> align=`left`


#### 举例：22\.375<br/>转化整数部分：<br/>22 / 2 = 11 \.\.\. 0<br/>11 / 2 = 5  \.\.\. 1<br/> 5 / 2 = 2  \.\.\. 1<br/> 2 / 2 = 1  \.\.\. 0<br/> 1 / 2 = 0  \.\.\. 1<br/>得到：10110
> align=`left`


### 小数部分转化

#### 算法：<br/>1\. 将小数部分乘2取整<br/>2\. 如果结果仍有小数就继续乘2取整直到小数部分为0或者达到精度要求<br/>3\. 将取整结果从上到下的顺序记录
> align=`left`


#### 举例：22\.375<br/>转化小数部分：<br/>0\.375 \* 2 = 0 \+ 0\.75<br/>0\.75  \* 2 = 1 \+ 0\.5<br/>0\.5   \* 2 = 1 \+ 0<br/>得到：011
> align=`left`

